import request from "@/utils/request";

// const USER_BASE_URL = "/api/v1/users";
const USER_BASE_URL = "/core/employeeSchedule";

const schedulingApi = {
  /**
   * 查询指定日期排班员工列表
   *
   * @param queryParams 查询参数
   */
  getPage(date: string) {
    return request({
      url: `${USER_BASE_URL}/getEmployeeScheduleList?date=${date}`,
      method: "get",
    });
  },
  /**
   * 查询指定日期需要安排的工序列表
   * @param queryParams 查询参数
   */
  getProcessList(date: string) {
    return request<any, PageResult<ProductionOrder[]>>({
      url: `${USER_BASE_URL}/getTProdDetailBorByDate?date=${date}`,
      method: "get",
    });
  },
  /**
   * 删除指定日期员工排班
   * @param
   */
  deleteSchedule(id: number) {
    return request<any, PageResult<schedulingPageVO[]>>({
      url: `${USER_BASE_URL}/delEmployeeSchedule`,
      method: "post",
      data: {
        id: id,
      },
    });
  },
  /**
   * 保存排班信息
   * @param
   */
  saveSchedule(params: schedulingPageVO) {
    return request<
      { id: number; scheduleDate: string; employeeId: number },
      PageResult<schedulingPageVO[]>
    >({
      url: `${USER_BASE_URL}/saveOrUpdateEmployeeSchedule`,
      method: "post",
      data: params,
    });
  },
  /**
   * 查询指定日期排班员工列表
   */
  getMonthlyEmployeeSchedule(date: string) {
    return request<any, PageResult<schedulingPageVO[]>>({
      url: `${USER_BASE_URL}/getMonthlyEmployeeSchedule?date=${date}`,
      method: "get",
    });
  },
};

export default schedulingApi;

export interface schedulingPageQuery extends PageQuery {
  date: string;
}

//员工排班
export interface schedulingPageVO {
  /** 创建人姓名 */
  createName: string;

  /** 创建时间（ISO 8601格式字符串） */
  createTime: string;

  /** 创建人用户ID */
  createUser: number;

  /** 员工ID */
  employeeId: string;

  /** 员工姓名 */
  employeeName: string;

  /** 记录ID */
  id: number;

  /** 是否已删除（0表示未删除） */
  isDelete: number;

  /** 修改人姓名 */
  modifyName: string;

  /** 修改时间（ISO 8601格式字符串） */
  modifyTime: string;

  /** 修改人用户ID */
  modifyUser: number;

  /** 员工联系电话 */
  phone: string;

  /** 员工职位 */
  position: string;

  /** 流程编码 */
  processCode: string;

  /** 流程名称 */
  processName: string;

  /** 调度ID */
  scheduleId: number;

  /** 状态（假设为字符串类型，表示不同的状态） */
  status: string;
  scheduleDate: string;
}

//工序列表
export interface ProductionOrder {
  /** 产能 */
  capacity: number;

  /** 换产时间（可能是时间戳或特定格式的时间表示） */
  changeProductTime: number;

  /** 生产单编号 */
  code: string;

  /** 创建时间（ISO 8601格式字符串） */
  createTime: string;

  /** 不良率 */
  defectiveRate: number;

  /** 预计交货日期（ISO 8601格式字符串） */
  deliveryDate: string;

  /** 记录ID */
  id: number;

  /** 是否自动生产（0表示否） */
  isAutoProd: number;

  /** 是否已删除（0表示未删除） */
  isDelete: number;

  /** 是否已获取数据（0表示未获取） */
  isGetData: number;

  /** 机器编码 */
  machineCode: string;

  /** 最后修改时间（ISO 8601格式字符串） */
  modifyTime: string;

  /** 分页页码 */
  pageNum: number;

  /** 分页大小 */
  pageSize: number;

  /** 父级编码（可能表示关联的生产单或计划） */
  parentCode: string;

  /** 人工计划数量 */
  personPlan: number;

  /** 计划开始日期（ISO 8601格式字符串） */
  planDate: string;

  /** 流程编码 */
  processCode: string;

  /** 流程名称 */
  processName: string;

  /** 生产部门 */
  prodDeparment: string;

  /** 生产线 */
  prodLine: string;

  /** 预计生产时间（可能是时间戳或特定格式的时间表示） */
  prodTime: number;

  /** 生产单位 */
  prodUnit: string;

  /** 备注 */
  remark: string;

  /** 行序号（可能用于排序或内部标识） */
  rowSeq: number;

  /** 排序序号（可能用于特定排序逻辑） */
  sortSeq: number;

  /** 时间范围列表（可能包含多个时间段的字符串表示） */
  timeScopes: string[];
  workerCount: number;
}
